Installing applications for mobile devices pose significant challenges, as each device is different and requires a different software implementation. Even more complicated are applications that are installed over a network onto the device, based on a user's request, since no prior knowledge of the device exists. One additional challenge is that mobile devices and mobile device networks evolve and change over time.
The conventional approach for the application installer is to compile an application multiple times, once for each device type, and allow the application user to choose one of the compiled programs, based on her device type. There are several disadvantages with this approach: First, it requires a large amount of programming labor to research and compile the program for every device type. Second, it requires all executables to be compiled ahead of time and the approach can only be applied to devices that exist at the time of compilation. Third, it requires the network server provide sufficient storage for all of the versions of the application. Fourth, it requires that the application user have correct knowledge of her device type. Fifth, it cannot adapt to changing conditions in the mobile device, carrier or network.
Therefore, there exists a need for an efficient, effective and adaptive way to install an application for a mobile device.